#ifndef WORKER_OWNED_STATES_H
#define WORKER_OWNED_STATES_H

#include "State.h"

class Worker;

///Some state

class WaitW : public State<Worker>
{
private:
  
  WaitW(){}
  
  //copy ctor and assignment should be private
  WaitW(const WaitW&);
  WaitW& operator=(const WaitW&);
 
public:

  static WaitW* Instance();
  
public:
  
  virtual void Enter(Worker* worker);

  virtual void Execute(Worker* worker);

  virtual void Exit(Worker* worker);

};

///Some state

class MoveW : public State<Worker>
{
private:
  
  MoveW(){}
  
  //copy ctor and assignment should be private
  MoveW(const MoveW&);
  MoveW& operator=(const MoveW&);
 
public:

  static MoveW* Instance();
  
public:
  
  virtual void Enter(Worker* worker);

  virtual void Execute(Worker* worker);

  virtual void Exit(Worker* worker);

};

#endif